
#ifndef LCM_TILING_H
#define LCM_TILING_H
#include "register/tilingdata_base.h"

namespace optiling {
BEGIN_TILING_DATA_DEF(LcmTilingData)
TILING_DATA_FIELD_DEF(uint16_t, nDim);
TILING_DATA_FIELD_DEF(uint16_t, nAcores);
TILING_DATA_FIELD_DEF(uint16_t, nBcores);
TILING_DATA_FIELD_DEF(uint16_t, maxBlockPerIter);
TILING_DATA_FIELD_DEF(uint32_t, blockPerCore);
TILING_DATA_FIELD_DEF_ARR(uint32_t, 5, shapeInput);
TILING_DATA_FIELD_DEF_ARR(uint32_t, 5, shapeOther);
END_TILING_DATA_DEF;
REGISTER_TILING_DATA_CLASS(Lcm, LcmTilingData)

BEGIN_TILING_DATA_DEF(LcmTilingDataBroadSpec)
TILING_DATA_FIELD_DEF(uint32_t, broadcastDim);
TILING_DATA_FIELD_DEF(uint32_t, batchDataSize);
TILING_DATA_FIELD_DEF(uint32_t, nBatchPerCore);
TILING_DATA_FIELD_DEF(uint16_t, nAcores);
TILING_DATA_FIELD_DEF(uint16_t, nBcores);
END_TILING_DATA_DEF;
REGISTER_TILING_DATA_CLASS(Lcm_1, LcmTilingDataBroadSpec)

BEGIN_TILING_DATA_DEF(LcmTilingDataVec)
TILING_DATA_FIELD_DEF(uint16_t, nAcores);
TILING_DATA_FIELD_DEF(uint16_t, nBcores);
TILING_DATA_FIELD_DEF(uint16_t, maxBlockPerIter);
TILING_DATA_FIELD_DEF(uint32_t, blockPerCore);
END_TILING_DATA_DEF;
REGISTER_TILING_DATA_CLASS(Lcm_2, LcmTilingDataVec)

} // namespace optiling
#endif // LCM_TILING_H
